home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / signalfd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.4 KB  |  72 lines

  1. /*
  2.  *  include/linux/signalfd.h
  3.  *
  4.  *  Copyright (C) 2007  Davide Libenzi <davidel@xmailserver.org>
  5.  *
  6.  */
  7.  
  8. #ifndef _LINUX_SIGNALFD_H
  9. #define _LINUX_SIGNALFD_H
  10.  
  11. /* For O_CLOEXEC and O_NONBLOCK */
  12. #include <linux/fcntl.h>
  13.  
  14. /* Flags for signalfd4.  */
  15. #define SFD_CLOEXEC O_CLOEXEC
  16. #define SFD_NONBLOCK O_NONBLOCK
  17.  
  18. struct signalfd_siginfo {
  19.     __u32 ssi_signo;
  20.     __s32 ssi_errno;
  21.     __s32 ssi_code;
  22.     __u32 ssi_pid;
  23.     __u32 ssi_uid;
  24.     __s32 ssi_fd;
  25.     __u32 ssi_tid;
  26.     __u32 ssi_band;
  27.     __u32 ssi_overrun;
  28.     __u32 ssi_trapno;
  29.     __s32 ssi_status;
  30.     __s32 ssi_int;
  31.     __u64 ssi_ptr;
  32.     __u64 ssi_utime;
  33.     __u64 ssi_stime;
  34.     __u64 ssi_addr;
  35.  
  36.     /*
  37.      * Pad strcture to 128 bytes. Remember to update the
  38.      * pad size when you add new members. We use a fixed
  39.      * size structure to avoid compatibility problems with
  40.      * future versions, and we leave extra space for additional
  41.      * members. We use fixed size members because this strcture
  42.      * comes out of a read(2) and we really don't want to have
  43.      * a compat on read(2).
  44.      */
  45.     __u8 __pad[48];
  46. };
  47.  
  48.  
  49. #ifdef __KERNEL__
  50.  
  51. #ifdef CONFIG_SIGNALFD
  52.  
  53. /*
  54.  * Deliver the signal to listening signalfd.
  55.  */
  56. static inline void signalfd_notify(struct task_struct *tsk, int sig)
  57. {
  58.     if (unlikely(waitqueue_active(&tsk->sighand->signalfd_wqh)))
  59.         wake_up(&tsk->sighand->signalfd_wqh);
  60. }
  61.  
  62. #else /* CONFIG_SIGNALFD */
  63.  
  64. static inline void signalfd_notify(struct task_struct *tsk, int sig) { }
  65.  
  66. #endif /* CONFIG_SIGNALFD */
  67.  
  68. #endif /* __KERNEL__ */
  69.  
  70. #endif /* _LINUX_SIGNALFD_H */
  71.  
  72.